// 权限问题
import router from './router'
import store from './store'
import getPageTitle from '@/utils/get-page-title'

import NProgress from 'nprogress' // 进度条
import 'nprogress/nprogress.css' // 进度条样式
import { getToken } from "@/utils/auth";

NProgress.configure({ showSpinner: false }) // NProgress配置 告诉用户页面刷新进度

// vue 中的导航首位 跳转页面是要做的事 调next才跳转
router.beforeEach(async (to, from, next) => {
    // 启动进度条
    NProgress.start()
    // 设置页面标题
    document.title = getPageTitle(to.meta.title)
    // 确定用户是否已登陆
    const hasToken = getToken();

    if (hasToken) {
        // 如果token存在说明已经登录 还想登录 直接返回主页
        if (to.path === '/login') {
            // 跳转首页
            next({ path: '/' })
            NProgress.done()
        } else { // 要去除了登录以外的其他页面都要获取用户信息
            // 每次跳转
            await store.dispatch('user/getInfo')
            next()
        }
    } else if (!to.meta.requireAuth) {
        // 不需要登录也可以访问的页面 直接放行
        next()
    } else {
        // 没登陆不能访问的页面 直接返回登录页面
        next('/login')
    }
})

// 跳转完成之后
router.afterEach(() => {
    // 完成进度条
    NProgress.done()
})